package com.jz.main.io.reactor;

import com.sun.net.httpserver.HttpServer;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.io.IOException;
import java.util.function.Consumer;

public class ReactorTest {
    public static void main(String[] args) {
        bb();

    }

    static void aa(){
        // 创建一个包含1到10的整数序列的Flux
        Flux<Integer> flux = Flux.range(1, 10);

        // 订阅并定义对每个元素的处理逻辑
        flux.subscribe(
                // onNext 处理器，处理每个元素
                next -> System.out.println("Next: " + next),
                // onError 处理器，处理错误情况
                error -> System.err.println("Error: " + error),
                // onComplete 处理器，处理序列完成时的操作
                () -> System.out.println("Completed!")
        );

    }
    static void bb(){
        // 创建一个Mono，它代表一个异步计算的单个结果
        Flux<String> reactiveStringMono = Flux.create(emitter -> {
            // 这里模拟String变量的变化
            String a = "initial value";
            emitter.next(a); // 发射初始值

            // 假设这里有一些逻辑改变了a的值
            // 例如，从用户输入、文件读取或其他数据源获取新值
            a = "updated value";
            emitter.next(a); // 发射更新后的值

            // 最后，完成数据流
            emitter.complete();
        });

        // 订阅这个Mono，并对每个发射的值执行操作
        reactiveStringMono.subscribe(
                value -> System.out.println("Received string value: " + value), // onNext
                throwable -> System.err.println("Error occurred: " + throwable.getMessage()), // onError
                () -> System.out.println("Completed processing string values") // onComplete
        );
    }
}
